package ligacaodados;

import metodos.BitDeParidade;
import metodos.CRC;
import metodos.Hamming;

public class Receptor {

	private int[] trama;
	private String errosNaTrama;
	private int[] tramaCorrigida;

	public Receptor(int[] trama, int opTecnica) {
		this.trama = trama;
		tramaCorrigida = null;

		boolean comErros = false;
		switch (opTecnica) {
		case 1:
			BitDeParidade bitParidade = new BitDeParidade(trama);
			comErros = bitParidade.receptor();
			break;
		case 2:
			CRC crc = new CRC(trama);
			comErros = crc.receptor();
			break;
		case 3:
			Hamming hamming = new Hamming(trama);
			
			comErros = (trama.length==7) ? hamming.receptor_4Bits() : hamming.receptor_11Bits();
			tramaCorrigida = hamming.getTramaCorrigida();
			break;
		}
		
		if (comErros)
			errosNaTrama = "Trama com Erro(s)";
		else
			errosNaTrama = "Trama sem Erro(s)";
	}

	public int[] getTrama() {
		return trama;
	}
	
	public String getErrosNaTrama() {
		return errosNaTrama;
	}
	
	public int[] getTramaCorrigida(){
		return tramaCorrigida;
	}
}
